import { Game } from "./Game";
import { SquareGroup } from "./SquareGroup";

export interface Point {
  readonly x: number;
  readonly y: number;
}

/**
 * 接口（契约）
 * 显示者：实现显示、移除功能
 */
export interface IViewer {
  show(): void;
  remove(): void; // 移除 不再显示
}

/**
 * 形状
 */
export type Shape = Point[];

/**
 * 移动方向
 */
export enum MoveDirection {
  left,
  right,
  down
}

/**
 * 游戏状态
 */
export enum GameStatus {
  init,
  start,
  pause,
  over,
  playing
}

/**
 * 游戏类接口：
 * 显示方块
 * 切换方块
 */
export interface GameViewer {
  /**
   * 显示下一个方块
   * @param teris
   */
  showNext(teris: SquareGroup): void;
  /**
   * 切换方块显示的区域面板
   * @param teris 切换方块的对象
   */
  switch(teris: SquareGroup): void;

  // 游戏面板初始化
  init(game: Game): void;
  // 显示当前用户分数
  showScore(score: number): void;

  onPause(): void;
  onStart(): void;
  onOver(): void;
}
